##############################################################################
#
#  Sample Makefile for C/C++ applications for the UTSC environment.
#    Works for single and multiple file programs.
#
##############################################################################

# Define C compiler
CC            = gcc

# Define C++ compiler
CCC	      = g++

# Define C compiler options
CFLAGS        = -Wall -c -g -I../lwneuralnet-0.8/source

# Define C++ compiler options
CCCFLAGS      = -Wall -ansi -c -g

# Define C/C++ pre-processor options
CPPFLAGS      = -I./ -I$(GLUIDIR)/include -I$(GLDIR)/include -I$(XLIBDIR)

# Define location of GLUT directory (/usr/local for UTSC)
GLUTDIR       = /usr

# Define location of OpenGL directory (/usr/local for UTSC)
GLDIR         = /usr

# Note the GLUI directory is in the same as the GL and GLUT directories,
# not in the X11R6 directory anymore
# Define location of GLUI directory
GLUIDIR       = /usr

# And also note the different library names for the glu, gl, and glut libraries
# Define location of OpenGL and GLU libraries along with their lib names
GL_LIBS       = -L/lib -lglu32 -lopengl32 

# Define location of Glut libraries along with glut lib name
GLUT_LIBS     = -L/lib -lglut32

# Define location of GLUI libraries along with glui lib name
GLUI_LIBS     = -L/lib -lglui

# Define location of the X11 Windows directory (for X11 Windows header files)
XLIBDIR       = /usr/include

# Define location of X Windows libraries,  and the X11 library names
XLIBS         = -L/usr/X11R6/lib -lX11 -lXi -lXmu

# Define the location of the destination directory for the executable file
DEST	      = .

# Define flags that should be passed to the linker
LDFLAGS	      =

# Define libraries to be linked with
LIBS          = $(GLUI_LIBS) $(GL_LIBS) $(GLUT_LIBS) -lm $(XLIBS) -ldl -lm  ../lwneuralnet-0.8/source/liblwneuralnet.a

# Define linker
LINKER	      = g++

# Define all object files to be the same as CPPSRCS but with all the .cpp and .c suffixes replaced with .o
OBJ           = $(CPPSRCS:.cpp=.o) $(CSRCS:.c=.o)

# Define name of target executable
PROGRAM	          = a2

# Define all C source files here
CSRCS         = nets.c nets.h

# Define all C++ source files here
CPPSRCS       = 

##############################################################################
# Define additional rules that make should know about in order to compile our
# files.                                        
##############################################################################

# Define default rule if Make is run without arguments
all : $(PROGRAM)

# Define rule for compiling all C++ files
%.o : %.cpp
	$(CCC) $(CCCFLAGS) $(CPPFLAGS) $*.cpp
	
# Define rule for compiling all C files
%.o : %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) $*.c
	
# Define rule for creating executable
$(PROGRAM) :	$(OBJ)
		@echo -n "Loading $(PROGRAM) ... "
		$(LINKER) $(LDFLAGS) $(OBJ) $(LIBS) -o $(PROGRAM)
		@echo "done"
		
# Define rule to clean up directory by removing all object, temp and core
# files along with the executable
clean :
	rm *.o -f 
	rm *.bak -f 
	rm *.exe -f 
	rm *.bmp -f 
	rm *.stackdump -f 
# @rm -f $(OBJ) *~ core $(PROGRAM)
